#ifndef DW_GRAFFITI_COLOR_H
#	define DW_GRAFFITI_COLOR_H

namespace dw {
	namespace graffiti {

template< typename T >
struct Color;

template< typename T >
struct Color
{
public : //! @name Constants
	//! @{
	static const Color< T > Black;
	static const Color< T > Blue;
	static const Color< T > Brown;
	static const Color< T > Cyan;
	static const Color< T > Gold;
	static const Color< T > Grey;
	static const Color< T > Green;
	static const Color< T > Magenta;
	static const Color< T > Orange;
	static const Color< T > Pink;
	static const Color< T > Purple;
	static const Color< T > Red;
	static const Color< T > White;
	static const Color< T > Yellow;
	static const Color< T > LightBlue;
	//! @}

public : //! @name Construction & Destruction
	//! @{
	Color(const Color< T >& ref);
	Color(const T& pR = 0, const T& pG = 0, const T& pB = 0, const T& pA = 1);
	//! @}

public : //! @name Data
	//! @{
	T r, g, b, a;
	//! @}
};

typedef Color< dw::uint32 > Colori;
typedef Color< dw::float32 > Colorf;
typedef Color< dw::float64 > Colord;

	} // namespace graffiti
} // namespace dw

#include "color.inl"

#endif // !DW_GRAFFITI_COLOR_H
